package com.czp.user.mapper;

import java.util.List;

import org.apache.ibatis.session.RowBounds;

import com.czp.log.model.Log;
import com.czp.menu.model.Menu;
import com.czp.user.model.RelationRole;
import com.czp.user.model.User;

/**
 * 【环 境】：J2SE 1.6
 * @author   柴志鹏
 * @version  version 1.0
 * @since    2014-4-25 新建
 */
public interface IUserMapper {
	
	/** 
	 * 【描 述】：添加用户
	 * @param user
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int addUser(User user) throws Exception;
	
	/** 
	 * 【描 述】：修改一条用户信息
	 * @param User
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int editorUser(User user) throws Exception;
	
	/** 
	 * 【描 述】：删除用户信息
	 * @param User(id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteUser(User user) throws Exception;
	
	/** 
	 * 【描 述】：根据人员Id查询用户信息
	 * @param personId 人员Id
	 * @return 用户信息
	 * @throws Exception
	 */
	User getUserInfoByPid(String personId) throws Exception;
	
	/** 
	 * 【描 述】：查询人员关联角色信息
	 * @param personId人员Id
	 * @return 角色集合
	 * @throws Exception
	 */
	List<RelationRole> queryRelationRole(String personId) throws Exception;
	
	/** 
	 * 【描 述】：根据人员Id查询全部被选中角色
	 * @param RelationRole(人员Id,角色名称)
	 * @param RowBounds(start,limit)
	 * @return 角色与被选中信息List集合
	 * @throws Exception
	 */
	List<RelationRole> getSelectedRoleList(RelationRole relRole, RowBounds bounds) throws Exception;
	
	/** 
	 * 【描 述】：根据人员Id查询全部被选中角色"数量"
	 * @param RelationRole(角色名称)
	 * @return 数量
	 * @throws Exception
	 */
	int getSelectedRoleRecords(RelationRole relRole) throws Exception;
	
	/** 
	 * 【描 述】：添加一条角色管理信息
	 * @param RelationRole(人员Id，角色Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int insertRelationRole(RelationRole relRole) throws Exception;
	
	/** 
	 * 【描 述】：根据人员Id与角色Id删除菜单关联项
	 * @param RelationRole(人员Id，角色Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteRelationRole(RelationRole relRole) throws Exception;
	
	/** 
	 * 【描 述】：通过人员Id与角色Id查询指定关联角色是否存在
	 * @param RelationRole(人员Id，角色Id)
	 * @return 数量
	 * @throws Exception
	 */
	int matchAddRelationRole(RelationRole relRole) throws Exception;
	
	/** 
	 * 【描 述】：根据角色Id查询关联"菜单"
	 * @param personId人员Id
	 * @return 菜单集合
	 * @throws Exception
	 */
	List<Menu> queryRelationMenu(String personId) throws Exception;
	
	/** 
	 * 【描 述】：用户登录
	 * @param user(username)
	 * @return user(id,password)
	 * @throws Exception
	 */
	User login(String username) throws Exception;
	
	/**
	 * 【描 述】：验证用户名是否存在
	 * @param 用户名
	 * @return 存在数量
	 * @throws Exception
	 */
	int isUserExist(String username) throws Exception;
	
	/** 
	 * 【描 述】：根绝用户Id查询密码
	 * @param 用户Id
	 * @return 密码
	 * @throws Exception
	 */
	String queryPasswordById(int userId) throws Exception;
	
	/** 
	 * 【描 述】：根据用户Id修改密码
	 * @param User(id, password, oldPass)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int modifyPassword(User user) throws Exception;
	
	/** 
	 * 【描 述】：添加登录日志信息
	 * @param Log
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int addLoginLogInfo(Log log) throws Exception;
}
